Request/Reply প্যাটার্ন ব্যবহার করে একটি ক্লায়েন্ট-সার্ভার প্রোগ্রাম তৈরি করা

Latest Technologies - জিরো এমকিউ (ZeroMQ) - প্র্যাকটিস প্রোজেক্টস
158

ZeroMQ ব্যবহার করে Request/Reply প্যাটার্নের ভিত্তিতে একটি ক্লায়েন্ট-সার্ভার প্রোগ্রাম তৈরি করা যায়, যেখানে ক্লায়েন্ট একটি অনুরোধ পাঠায় এবং সার্ভার সেই অনুরোধের উত্তরে একটি রেসপন্স পাঠায়। নিচে একটি পূর্ণাঙ্গ উদাহরণ দেওয়া হলো, যেখানে ক্লায়েন্ট এবং সার্ভার উভয়ই Python-এ তৈরি করা হয়েছে।

প্রোগ্রাম বিবরণ

  • সার্ভার: সার্ভার ZMQ_REP (Reply) সকেট ব্যবহার করে। এটি ক্লায়েন্ট থেকে একটি অনুরোধ গ্রহণ করে এবং একটি নির্দিষ্ট উত্তর (response) পাঠায়।
  • ক্লায়েন্ট: ক্লায়েন্ট ZMQ_REQ (Request) সকেট ব্যবহার করে। এটি সার্ভারের কাছে একটি অনুরোধ পাঠায় এবং সার্ভার থেকে একটি রেসপন্স গ্রহণ করে।

সার্ভার কোড (Server)

import zmq

# ZeroMQ কনটেক্সট তৈরি করা
context = zmq.Context()

# REP সকেট তৈরি করা এবং একটি পোর্টে বাইন্ড করা
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")  # এখানে ৫৫৫৫ পোর্টে বাইন্ড করা হয়েছে

print("Server is running and waiting for requests...")

while True:
    # ক্লায়েন্ট থেকে মেসেজ গ্রহণ করা
    message = socket.recv_string()
    print(f"Received request: {message}")
    
    # ক্লায়েন্টকে রেসপন্স পাঠানো
    response = f"Hello, you sent: {message}"
    socket.send_string(response)
  • ব্যাখ্যা:
    • zmq.Context() ZeroMQ-এর জন্য একটি কনটেক্সট তৈরি করে।
    • socket.bind("tcp://*:5555") দিয়ে সার্ভারটি ৫৫৫৫ পোর্টে বাইন্ড করা হয়েছে।
    • সার্ভার একটি অনুরোধ গ্রহণ করে এবং socket.send_string() মেথড দিয়ে ক্লায়েন্টকে একটি রেসপন্স পাঠায়।

ক্লায়েন্ট কোড (Client)

import zmq

# ZeroMQ কনটেক্সট তৈরি করা
context = zmq.Context()

# REQ সকেট তৈরি করা এবং সার্ভারের সাথে সংযোগ করা
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")  # localhost এবং ৫৫৫৫ পোর্টে সংযোগ

# ৫টি অনুরোধ পাঠানোর জন্য একটি লুপ
for i in range(5):
    request_message = f"Request {i}"
    print(f"Sending: {request_message}")
    
    # সার্ভারকে মেসেজ পাঠানো
    socket.send_string(request_message)
    
    # সার্ভার থেকে রেসপন্স গ্রহণ করা
    response = socket.recv_string()
    print(f"Received reply {i}: {response}")
  • ব্যাখ্যা:
    • socket.connect("tcp://localhost:5555") দিয়ে ক্লায়েন্ট সার্ভারের সাথে সংযুক্ত হয়েছে।
    • for লুপের মাধ্যমে ক্লায়েন্ট সার্ভারে ৫টি অনুরোধ পাঠাচ্ছে।
    • ক্লায়েন্ট অনুরোধ পাঠানোর পর socket.recv_string() দিয়ে সার্ভারের থেকে রেসপন্স গ্রহণ করছে।

প্রোগ্রাম চালানো

প্রথমে সার্ভার প্রোগ্রাম চালান:

এটি চালানোর পর সার্ভার চালু থাকবে এবং ক্লায়েন্টের অনুরোধের জন্য অপেক্ষা করবে।

python server.py

এরপর ক্লায়েন্ট প্রোগ্রাম চালান:

ক্লায়েন্ট প্রোগ্রাম চালানোর পর সার্ভারকে ৫টি অনুরোধ পাঠাবে এবং প্রতিটি অনুরোধের জন্য সার্ভার থেকে রেসপন্স গ্রহণ করবে।

python client.py

আউটপুট

সার্ভারের আউটপুট:

Server is running and waiting for requests...
Received request: Request 0
Received request: Request 1
Received request: Request 2
Received request: Request 3
Received request: Request 4

ক্লায়েন্টের আউটপুট:

Sending: Request 0
Received reply 0: Hello, you sent: Request 0
Sending: Request 1
Received reply 1: Hello, you sent: Request 1
Sending: Request 2
Received reply 2: Hello, you sent: Request 2
Sending: Request 3
Received reply 3: Hello, you sent: Request 3
Sending: Request 4
Received reply 4: Hello, you sent: Request 4

সারসংক্ষেপ

এই ক্লায়েন্ট-সার্ভার প্রোগ্রামটি ZeroMQ-এর Request/Reply প্যাটার্নের একটি উদাহরণ, যেখানে ক্লায়েন্ট সার্ভারে অনুরোধ পাঠায় এবং সার্ভার সেই অনুরোধের উত্তর দেয়। ZeroMQ-এর সাহায্যে এটি দ্রুত এবং নির্ভরযোগ্যভাবে কাজ করে। Request/Reply প্যাটার্ন সাধারণত ক্লায়েন্ট-সার্ভার মডেল, API কল, এবং ডিস্ট্রিবিউটেড সিস্টেমের মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়।

Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...